//
//	Entry.swift
//	Model file generated using JSONExport: https://github.com/Ahmed-Ali/JSONExport

import Foundation

struct Entry : Codable {

	let id : String?
	let achievements : [String]?
	let author : Author?
	let city : String?
	let citycode : String?
	let clientIp : String?
	let commentUsers : Int?
	let comments : Int?
	let content : String?
	let contentType : [String]?
	let contentTypeStr : String?
	let country : String?
	let created : String?
	let dayflowBookId : String?
	let expansion : Expansion?
	let externalShareCount : Int?
	let favoriteCount : Int?
	let feel : Int?
	let geo : [Float]?
	let gif : String?
	let hasFavorited : Bool?
	let hashTags : [String]?
	let images : [String]?
	let internalShareCount : Int?
	let isAd : Bool?
	let likeRank : [String]?
	let likeStatistics : LikeStatistic?
	let likes : Int?
	let manualViewCount : Int?
	let meta : LocalMeta?
	let nationCode : String?
	let noise : Bool?
	let payload : Payload?
	let photo : String?
	let province : String?
	let publicField : Bool?
	let quality : Float?
	let reason : String?
	let relation : Int?
	let safeLevel : Int?
	let sampleComments : [SampleComment]?
	let schema : String?
	let source : String?
	let squadDayIndex : Int?
	let state : String?
	let stateValue : Int?
	let style : Int?
	let timezone : String?
	let traininglog : String?
	let type : String?
	let video : String?
	let videoBitRateUrls : [String]?
	let videoBitRates : [String]?
	let videoLength : Int?
	let videoPlayCount : Int?
	let videoSourceType : String?
	let videoVoice : Bool?
	let viewCount : Int?
	let vlog : Bool?


	enum CodingKeys: String, CodingKey {
		case id = "_id"
		case achievements = "achievements"
		case author
		case city = "city"
		case citycode = "citycode"
		case clientIp = "clientIp"
		case commentUsers = "commentUsers"
		case comments = "comments"
		case content = "content"
		case contentType = "contentType"
		case contentTypeStr = "contentTypeStr"
		case country = "country"
		case created = "created"
		case dayflowBookId = "dayflowBookId"
		case expansion
		case externalShareCount = "externalShareCount"
		case favoriteCount = "favoriteCount"
		case feel = "feel"
		case geo = "geo"
		case gif = "gif"
		case hasFavorited = "hasFavorited"
		case hashTags = "hashTags"
		case images = "images"
		case internalShareCount = "internalShareCount"
		case isAd = "isAd"
		case likeRank = "likeRank"
		case likeStatistics
		case likes = "likes"
		case manualViewCount = "manualViewCount"
		case meta
		case nationCode = "nationCode"
		case noise = "noise"
		case payload
		case photo = "photo"
		case province = "province"
		case publicField = "public"
		case quality = "quality"
		case reason = "reason"
		case relation = "relation"
		case safeLevel = "safeLevel"
		case sampleComments = "sampleComments"
		case schema = "schema"
		case source = "source"
		case squadDayIndex = "squadDayIndex"
		case state = "state"
		case stateValue = "stateValue"
		case style = "style"
		case timezone = "timezone"
		case traininglog = "traininglog"
		case type = "type"
		case video = "video"
		case videoBitRateUrls = "videoBitRateUrls"
		case videoBitRates = "videoBitRates"
		case videoLength = "videoLength"
		case videoPlayCount = "videoPlayCount"
		case videoSourceType = "videoSourceType"
		case videoVoice = "videoVoice"
		case viewCount = "viewCount"
		case vlog = "vlog"
	}
	init(from decoder: Decoder) throws {
		let values = try decoder.container(keyedBy: CodingKeys.self)
		id = try values.decodeIfPresent(String.self, forKey: .id)
		achievements = try values.decodeIfPresent([String].self, forKey: .achievements)
		author = try Author(from: decoder)
		city = try values.decodeIfPresent(String.self, forKey: .city)
		citycode = try values.decodeIfPresent(String.self, forKey: .citycode)
		clientIp = try values.decodeIfPresent(String.self, forKey: .clientIp)
		commentUsers = try values.decodeIfPresent(Int.self, forKey: .commentUsers)
		comments = try values.decodeIfPresent(Int.self, forKey: .comments)
		content = try values.decodeIfPresent(String.self, forKey: .content)
		contentType = try values.decodeIfPresent([String].self, forKey: .contentType)
		contentTypeStr = try values.decodeIfPresent(String.self, forKey: .contentTypeStr)
		country = try values.decodeIfPresent(String.self, forKey: .country)
		created = try values.decodeIfPresent(String.self, forKey: .created)
		dayflowBookId = try values.decodeIfPresent(String.self, forKey: .dayflowBookId)
		expansion = try Expansion(from: decoder)
		externalShareCount = try values.decodeIfPresent(Int.self, forKey: .externalShareCount)
		favoriteCount = try values.decodeIfPresent(Int.self, forKey: .favoriteCount)
		feel = try values.decodeIfPresent(Int.self, forKey: .feel)
		geo = try values.decodeIfPresent([Float].self, forKey: .geo)
		gif = try values.decodeIfPresent(String.self, forKey: .gif)
		hasFavorited = try values.decodeIfPresent(Bool.self, forKey: .hasFavorited)
		hashTags = try values.decodeIfPresent([String].self, forKey: .hashTags)
		images = try values.decodeIfPresent([String].self, forKey: .images)
		internalShareCount = try values.decodeIfPresent(Int.self, forKey: .internalShareCount)
		isAd = try values.decodeIfPresent(Bool.self, forKey: .isAd)
		likeRank = try values.decodeIfPresent([String].self, forKey: .likeRank)
		likeStatistics = try LikeStatistic(from: decoder)
		likes = try values.decodeIfPresent(Int.self, forKey: .likes)
		manualViewCount = try values.decodeIfPresent(Int.self, forKey: .manualViewCount)
		meta = try LocalMeta(from: decoder)
		nationCode = try values.decodeIfPresent(String.self, forKey: .nationCode)
		noise = try values.decodeIfPresent(Bool.self, forKey: .noise)
		payload = try Payload(from: decoder)
		photo = try values.decodeIfPresent(String.self, forKey: .photo)
		province = try values.decodeIfPresent(String.self, forKey: .province)
		publicField = try values.decodeIfPresent(Bool.self, forKey: .publicField)
		quality = try values.decodeIfPresent(Float.self, forKey: .quality)
		reason = try values.decodeIfPresent(String.self, forKey: .reason)
		relation = try values.decodeIfPresent(Int.self, forKey: .relation)
		safeLevel = try values.decodeIfPresent(Int.self, forKey: .safeLevel)
		sampleComments = try values.decodeIfPresent([SampleComment].self, forKey: .sampleComments)
		schema = try values.decodeIfPresent(String.self, forKey: .schema)
		source = try values.decodeIfPresent(String.self, forKey: .source)
		squadDayIndex = try values.decodeIfPresent(Int.self, forKey: .squadDayIndex)
		state = try values.decodeIfPresent(String.self, forKey: .state)
		stateValue = try values.decodeIfPresent(Int.self, forKey: .stateValue)
		style = try values.decodeIfPresent(Int.self, forKey: .style)
		timezone = try values.decodeIfPresent(String.self, forKey: .timezone)
		traininglog = try values.decodeIfPresent(String.self, forKey: .traininglog)
		type = try values.decodeIfPresent(String.self, forKey: .type)
		video = try values.decodeIfPresent(String.self, forKey: .video)
		videoBitRateUrls = try values.decodeIfPresent([String].self, forKey: .videoBitRateUrls)
		videoBitRates = try values.decodeIfPresent([String].self, forKey: .videoBitRates)
		videoLength = try values.decodeIfPresent(Int.self, forKey: .videoLength)
		videoPlayCount = try values.decodeIfPresent(Int.self, forKey: .videoPlayCount)
		videoSourceType = try values.decodeIfPresent(String.self, forKey: .videoSourceType)
		videoVoice = try values.decodeIfPresent(Bool.self, forKey: .videoVoice)
		viewCount = try values.decodeIfPresent(Int.self, forKey: .viewCount)
		vlog = try values.decodeIfPresent(Bool.self, forKey: .vlog)
	}


}
